home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-09-25 | 2.5 KB | 140 lines | [TEXT/CWIE] |
- /*
- File: MoreTextUtils.cp
-
- Contains:
-
- Written by: Pete Gontier (PCG)
-
- Copyright: Copyright (c) 1998 Apple Computer, Inc.
-
- Change History (most recent first):
-
- <1> 6/16/98 PCG initial checkin
- */
-
-
- #include "MoreTextUtils.h"
-
- #ifndef __RESOURCES__
- # include <Resources.h>
- #endif
-
- #ifndef __PLSTRINGFUNCS__
- # include <PLStringFuncs.h>
- #endif
-
- pascal OSErr NewStringPtr (ConstStr255Param init, UInt8 maxSize, StringPtr *result)
- {
- OSErr err = noErr;
-
- if (!MoreAssert (result && (!init || (*init <= maxSize))))
- err = paramErr;
- else
- {
- *result = StringPtr (NewPtr (1 + (maxSize ? maxSize : (init ? *init : 255))));
-
- if (!*result)
- err = MemError ( );
- else if (init && *init)
- PLstrcpy (*result,init);
- else
- **result = 0;
- }
-
- return err;
- }
-
- pascal OSErr NewStringListHandle (Handle *h)
- {
- DebugStr ("\pThis routine has never been traced.");
-
- if (!MoreAssert (h))
- return nilHandleErr;
- *h = NewHandleClear (sizeof (UInt16));
- if (!*h)
- return MemError ( );
- return noErr;
- }
-
- pascal OSErr AppendStringToListHandle (ConstStr255Param str, Handle h)
- {
- DebugStr ("\pThis routine has never been traced.");
-
- OSErr err = noErr;
-
- if (!MoreAssert (h && *h))
- err = nilHandleErr;
- else
- {
- UInt8 dummyZero;
-
- if (!str)
- {
- dummyZero = 0;
- str = &dummyZero;
- }
-
- if (!(err = PtrAndHand (str, h, *str + 1)))
- (** (UInt16 **) h) += 1;
- }
-
- return err;
- }
-
- pascal OSErr GetNewStringList (short resID, tStringListP *newStringList)
- {
- OSErr err = noErr;
-
- Handle h = GetResource ('STR#',resID);
-
- if (!h)
- {
- err = ResError ( );
- if (!err) err = resNotFound;
- }
- else
- {
- Size handleSize = InlineGetHandleSize (h);
- (void) MoreAssert (MemError ( ) == noErr);
-
- if (handleSize < 2)
- err = paramErr;
- else
- {
- UInt16 stringCount = ** (UInt16 **) h;
- Size stringListSize = sizeof (**newStringList) + (handleSize - 2) +
- (stringCount * sizeof (StringPtr));
-
- *newStringList = (tStringListP) NewPtr (stringListSize);
-
- if (!*newStringList)
- err = MemError ( );
- else
- {
- (*newStringList)->count = stringCount;
-
- if (stringCount)
- {
- UInt16 index = 0;
-
- StringPtr stringScan = (StringPtr) ((*newStringList)->list + stringCount);
-
- BlockMoveData (2 + *h, stringScan, handleSize - 2);
-
- do
- {
- (*newStringList)->list [index] = stringScan;
- stringScan += *stringScan + 1;
- }
- while (++index < stringCount);
- }
- }
- }
-
- ReleaseResource (h);
- (void) MoreAssert (ResError ( ) == noErr);
- }
-
- return err;
- }
-